#ifndef _EKOS_SYSCALL_H_
#define _EKOS_SYSCALL_H_

/* FORK 系列 -- 创建环境 */
#define SC_MONITOR              0

#define SC_EXIT                 1 /* destory the current environment */

#define SC_DUMB_FORK			2
#define SC_FORK					3
#define SC_SFORK                4

#define SC_FIX_ADDR             5   /* 处理 COW 标记 */

#define SC_SET_PFHANDLER		6	/* 设置页面错误处理 */
#define SC_CUR_ENV				7	/* 获取当前环境 */
#define SC_KPRINTF				8	/* 向内核输出信息 */
#define SC_WAIT					9	/* 放弃时间片 */
#define SC_WAITB				10	/* 放弃时间片, 设定状态 */
#define SC_ALLOC_PAGE			11	/* 分配内存 */
#define SC_REMOVE_MAP			12	/* 释放内存 */
#define SC_SET_ADM				13	/* 设置管理员权限 */
#define SC_SET_SVP              14	/* 设置系统服务权限 (RPC 提供者) */

// SLEEP / WAKEUP 机制
#define SC_SLEEP                15
#define SC_WAKEUP               16

// IEC call
// These calls are non-blocked
#define SC_IEC_SEND             17  /* 发送 IEC 信息 */
#define SC_IEC_SEND_FREE        18  /* 测试是否能够发送信息 */
#define SC_IEC_RECV             19  /* 接收 IEC 信息 */

// TODO
#define SC_SHARED_MAP			20
#define SC_SHARE_PAGE			21

#define SC_SET_USER_SERVICE     22
#define SC_GET_USER_SERVICE     23

// READ SYSTEM EVENT
#define SC_READ_KLOG_PIPE       24
#define SC_READ_IRQ_PIPE        25

// AND WAIT FOR IRQ
#define SC_WAIT_IRQ             26

#define SC_MAX 26

#endif /* _EKOS_SYSCALL_H_ */
